package net.bramp.ffmpeg.fixtures;

import com.google.common.collect.ImmutableList;
import net.bramp.ffmpeg.info.Filter;
import net.bramp.ffmpeg.info.FilterPattern;

/**
 * Class that contains all pixel formats as defined in the unit tests This should not be used as a
 * concise list of available pixel formattrue, as every install of ffmpeg is different. Call
 * ffmpeg.pixelFormats() to discover.
 */
public final class Filters {

  private Filters() {
    throw new AssertionError("No instances for you!");
  }

  public static final ImmutableList<Filter> FILTERS =
      new ImmutableList.Builder<Filter>()
          .add(
          new Filter(false, false, false, "abench",            new FilterPattern("A"), new FilterPattern("A"),       "Benchmark part of a filtergraph."),
          new Filter(false, false, true, "acompressor",       new FilterPattern("A"), new FilterPattern("A"),       "Audio compressor."),
          new Filter(false, false, false, "acontrast",         new FilterPattern("A"), new FilterPattern("A"),       "Simple audio dynamic range compression/expansion filter."),
          new Filter(false, false, false, "acopy",             new FilterPattern("A"), new FilterPattern("A"),       "Copy the input audio unchanged to the output."),
          new Filter(false, false, false, "acue",              new FilterPattern("A"), new FilterPattern("A"),       "Delay filtering to match a cue."),
          new Filter(false, false, false, "acrossfade",        new FilterPattern("AA"), new FilterPattern("A"),      "Cross fade two input audio streams."),
          new Filter(false, true, false, "acrossover",        new FilterPattern("A"), new FilterPattern("N"),       "Split audio into per-bands streams."),
          new Filter(true, false, true, "acrusher",          new FilterPattern("A"), new FilterPattern("A"),       "Reduce audio bit resolution."),
          new Filter(true, true, false, "adeclick",          new FilterPattern("A"), new FilterPattern("A"),       "Remove impulsive noise from input audio."),
          new Filter(true, true, false, "adeclip",           new FilterPattern("A"), new FilterPattern("A"),       "Remove clipping from input audio."),
          new Filter(true, true, false, "adecorrelate",      new FilterPattern("A"), new FilterPattern("A"),       "Apply decorrelation to input audio."),
          new Filter(true, false, true, "adelay",            new FilterPattern("A"), new FilterPattern("A"),       "Delay one or more audio channels."),
          new Filter(true, true, true, "adenorm",           new FilterPattern("A"), new FilterPattern("A"),       "Remedy denormals by adding extremely low-level noise."),
          new Filter(true, false, false, "aderivative",       new FilterPattern("A"), new FilterPattern("A"),       "Compute derivative of input audio."),
          new Filter(true, true, true, "adrc",              new FilterPattern("A"), new FilterPattern("A"),       "Audio Spectral Dynamic Range Controller."),
          new Filter(true, true, true, "adynamicequalizer", new FilterPattern("A"), new FilterPattern("A"),       "Apply Dynamic Equalization of input audio."),
          new Filter(true, false, true, "adynamicsmooth",    new FilterPattern("A"), new FilterPattern("A"),       "Apply Dynamic Smoothing of input audio."),
          new Filter(false, false, false, "aecho",             new FilterPattern("A"), new FilterPattern("A"),       "Add echoing to the audio."),
          new Filter(true, true, true, "aemphasis",         new FilterPattern("A"), new FilterPattern("A"),       "Audio emphasis."),
          new Filter(true, false, false, "aeval",             new FilterPattern("A"), new FilterPattern("A"),       "Filter audio signal according to a specified expression."),
          new Filter(true, false, true, "aexciter",          new FilterPattern("A"), new FilterPattern("A"),       "Enhance high frequency part of audio."),
          new Filter(true, false, true, "afade",             new FilterPattern("A"), new FilterPattern("A"),       "Fade in/out input audio."),
          new Filter(true, true, true, "afftdn",            new FilterPattern("A"), new FilterPattern("A"),       "Denoise audio samples using FFT."),
          new Filter(true, true, false, "afftfilt",          new FilterPattern("A"), new FilterPattern("A"),       "Apply arbitrary expressions to samples in frequency domain."),
          new Filter(false, true, true, "afir",              new FilterPattern("N"), new FilterPattern("N"),       "Apply Finite Impulse Response filter with supplied coefficients in additional stream(s)."),
          new Filter(false, false, false, "aformat",           new FilterPattern("A"), new FilterPattern("A"),       "Convert the input audio to one of the specified formats."),
          new Filter(true, true, true, "afreqshift",        new FilterPattern("A"), new FilterPattern("A"),       "Apply frequency shifting to input audio."),
          new Filter(true, true, true, "afwtdn",            new FilterPattern("A"), new FilterPattern("A"),       "Denoise audio stream using Wavelets."),
          new Filter(true, false, true, "agate",             new FilterPattern("A"), new FilterPattern("A"),       "Audio gate."),
          new Filter(false, true, false, "aiir",              new FilterPattern("A"), new FilterPattern("N"),       "Apply Infinite Impulse Response filter with supplied coefficients."),
          new Filter(true, false, false, "aintegral",         new FilterPattern("A"), new FilterPattern("A"),       "Compute integral of input audio."),
          new Filter(false, false, false, "ainterleave",       new FilterPattern("N"), new FilterPattern("A"),       "Temporally interleave audio inputs."),
          new Filter(true, false, false, "alatency",          new FilterPattern("A"), new FilterPattern("A"),       "Report audio filtering latency."),
          new Filter(true, false, true, "alimiter",          new FilterPattern("A"), new FilterPattern("A"),       "Audio lookahead limiter."),
          new Filter(true, true, true, "allpass",           new FilterPattern("A"), new FilterPattern("A"),       "Apply a two-pole all-pass filter."),
          new Filter(false, false, false, "aloop",             new FilterPattern("A"), new FilterPattern("A"),       "Loop audio samples."),
          new Filter(false, false, false, "amerge",            new FilterPattern("N"), new FilterPattern("A"),       "Merge two or more audio streams into a single multi-channel stream."),
          new Filter(true, false, false, "ametadata",         new FilterPattern("A"), new FilterPattern("A"),       "Manipulate audio frame metadata."),
          new Filter(false, false, true, "amix",              new FilterPattern("N"), new FilterPattern("A"),       "Audio mixing."),
          new Filter(false, false, false, "amultiply",         new FilterPattern("AA"), new FilterPattern("A"),      "Multiply two audio streams."),
          new Filter(true, true, true, "anequalizer",       new FilterPattern("A"), new FilterPattern("N"),       "Apply high-order audio parametric multi band equalizer."),
          new Filter(true, true, true, "anlmdn",            new FilterPattern("A"), new FilterPattern("A"),       "Reduce broadband noise from stream using Non-Local Means."),
          new Filter(true, true, true, "anlmf",             new FilterPattern("AA"), new FilterPattern("A"),      "Apply Normalized Least-Mean-Fourth algorithm to first audio stream."),
          new Filter(true, true, true, "anlms",             new FilterPattern("AA"), new FilterPattern("A"),      "Apply Normalized Least-Mean-Squares algorithm to first audio stream."),
          new Filter(false, false, false, "anull",             new FilterPattern("A"), new FilterPattern("A"),       "Pass the source unchanged to the output."),
          new Filter(true, false, false, "apad",              new FilterPattern("A"), new FilterPattern("A"),       "Pad audio with silence."),
          new Filter(true, false, true, "aperms",            new FilterPattern("A"), new FilterPattern("A"),       "Set permissions for the output audio frame."),
          new Filter(false, false, false, "aphaser",           new FilterPattern("A"), new FilterPattern("A"),       "Add a phasing effect to the audio."),
          new Filter(true, true, true, "aphaseshift",       new FilterPattern("A"), new FilterPattern("A"),       "Apply phase shifting to input audio."),
          new Filter(true, true, false, "apsnr",             new FilterPattern("AA"), new FilterPattern("A"),      "Measure Audio Peak Signal-to-Noise Ratio."),
          new Filter(true, true, true, "apsyclip",          new FilterPattern("A"), new FilterPattern("A"),       "Audio Psychoacoustic Clipper."),
          new Filter(false, false, false, "apulsator",         new FilterPattern("A"), new FilterPattern("A"),       "Audio pulsator."),
          new Filter(false, false, true, "arealtime",         new FilterPattern("A"), new FilterPattern("A"),       "Slow down filtering to match realtime."),
          new Filter(false, false, false, "aresample",         new FilterPattern("A"), new FilterPattern("A"),       "Resample audio data."),
          new Filter(false, false, false, "areverse",          new FilterPattern("A"), new FilterPattern("A"),       "Reverse an audio clip."),
          new Filter(true, true, true, "arls",              new FilterPattern("AA"), new FilterPattern("A"),      "Apply Recursive Least Squares algorithm to first audio stream."),
          new Filter(true, true, true, "arnndn",            new FilterPattern("A"), new FilterPattern("A"),       "Reduce noise from speech using Recurrent Neural Networks."),
          new Filter(true, true, false, "asdr",              new FilterPattern("AA"), new FilterPattern("A"),      "Measure Audio Signal-to-Distortion Ratio."),
          new Filter(false, false, false, "asegment",          new FilterPattern("A"), new FilterPattern("N"),       "Segment audio stream."),
          new Filter(false, false, false, "aselect",           new FilterPattern("A"), new FilterPattern("N"),       "Select audio frames to pass in output."),
          new Filter(false, false, false, "asendcmd",          new FilterPattern("A"), new FilterPattern("A"),       "Send commands to filters."),
          new Filter(true, false, true, "asetnsamples",      new FilterPattern("A"), new FilterPattern("A"),       "Set the number of samples for each output audio frames."),
          new Filter(false, false, true, "asetpts",           new FilterPattern("A"), new FilterPattern("A"),       "Set PTS for the output audio frame."),
          new Filter(false, false, false, "asetrate",          new FilterPattern("A"), new FilterPattern("A"),       "Change the sample rate without altering the data."),
          new Filter(false, false, false, "asettb",            new FilterPattern("A"), new FilterPattern("A"),       "Set timebase for the audio output link."),
          new Filter(false, false, false, "ashowinfo",         new FilterPattern("A"), new FilterPattern("A"),       "Show textual information for each audio frame."),
          new Filter(true, false, false, "asidedata",         new FilterPattern("A"), new FilterPattern("A"),       "Manipulate audio frame side data."),
          new Filter(true, true, false, "asisdr",            new FilterPattern("AA"), new FilterPattern("A"),      "Measure Audio Scale-Invariant Signal-to-Distortion Ratio."),
          new Filter(true, true, true, "asoftclip",         new FilterPattern("A"), new FilterPattern("A"),       "Audio Soft Clipper."),
          new Filter(false, true, false, "aspectralstats",    new FilterPattern("A"), new FilterPattern("A"),       "Show frequency domain statistics about audio frames."),
          new Filter(false, false, false, "asplit",            new FilterPattern("A"), new FilterPattern("N"),       "Pass on the audio input to N audio outputs."),
          new Filter(false, true, false, "astats",            new FilterPattern("A"), new FilterPattern("A"),       "Show time domain statistics about audio frames."),
          new Filter(false, false, true, "astreamselect",     new FilterPattern("N"), new FilterPattern("N"),       "Select audio streams"),
          new Filter(true, true, true, "asubboost",         new FilterPattern("A"), new FilterPattern("A"),       "Boost subwoofer frequencies."),
          new Filter(true, true, true, "asubcut",           new FilterPattern("A"), new FilterPattern("A"),       "Cut subwoofer frequencies."),
          new Filter(true, true, true, "asupercut",         new FilterPattern("A"), new FilterPattern("A"),       "Cut super frequencies."),
          new Filter(true, true, true, "asuperpass",        new FilterPattern("A"), new FilterPattern("A"),       "Apply high order Butterworth band-pass filter."),
          new Filter(true, true, true, "asuperstop",        new FilterPattern("A"), new FilterPattern("A"),       "Apply high order Butterworth band-stop filter."),
          new Filter(false, false, true, "atempo",            new FilterPattern("A"), new FilterPattern("A"),       "Adjust audio tempo."),
          new Filter(true, true, true, "atilt",             new FilterPattern("A"), new FilterPattern("A"),       "Apply spectral tilt to audio."),
          new Filter(false, false, false, "atrim",             new FilterPattern("A"), new FilterPattern("A"),       "Pick one continuous section from the input, drop the rest."),
          new Filter(false, false, false, "axcorrelate",       new FilterPattern("AA"), new FilterPattern("A"),      "Cross-correlate two audio streams."),
          new Filter(false, false, false, "azmq",              new FilterPattern("A"), new FilterPattern("A"),       "Receive commands through ZMQ and broker them to filters."),
          new Filter(true, true, true, "bandpass",          new FilterPattern("A"), new FilterPattern("A"),       "Apply a two-pole Butterworth band-pass filter."),
          new Filter(true, true, true, "bandreject",        new FilterPattern("A"), new FilterPattern("A"),       "Apply a two-pole Butterworth band-reject filter."),
          new Filter(true, true, true, "bass",              new FilterPattern("A"), new FilterPattern("A"),       "Boost or cut lower frequencies."),
          new Filter(true, true, true, "biquad",            new FilterPattern("A"), new FilterPattern("A"),       "Apply a biquad IIR filter with the given coefficients."),
          new Filter(false, false, false, "channelmap",        new FilterPattern("A"), new FilterPattern("A"),       "Remap audio channels."),
          new Filter(false, false, false, "channelsplit",      new FilterPattern("A"), new FilterPattern("N"),       "Split audio into per-channel streams."),
          new Filter(false, false, false, "chorus",            new FilterPattern("A"), new FilterPattern("A"),       "Add a chorus effect to the audio."),
          new Filter(false, false, false, "compand",           new FilterPattern("A"), new FilterPattern("A"),       "Compress or expand audio dynamic range."),
          new Filter(true, false, true, "compensationdelay", new FilterPattern("A"), new FilterPattern("A"),       "Audio Compensation Delay Line."),
          new Filter(true, false, true, "crossfeed",         new FilterPattern("A"), new FilterPattern("A"),       "Apply headphone crossfeed filter."),
          new Filter(true, true, true, "crystalizer",       new FilterPattern("A"), new FilterPattern("A"),       "Simple audio noise sharpening filter."),
          new Filter(true, false, false, "dcshift",           new FilterPattern("A"), new FilterPattern("A"),       "Apply a DC shift to the audio."),
          new Filter(true, false, false, "deesser",           new FilterPattern("A"), new FilterPattern("A"),       "Apply de-essing to the audio."),
          new Filter(true, false, true, "dialoguenhance",    new FilterPattern("A"), new FilterPattern("A"),       "Audio Dialogue Enhancement."),
          new Filter(false, false, false, "drmeter",           new FilterPattern("A"), new FilterPattern("A"),       "Measure audio dynamic range."),
          new Filter(true, true, true, "dynaudnorm",        new FilterPattern("A"), new FilterPattern("A"),       "Dynamic Audio Normalizer."),
          new Filter(false, false, false, "earwax",            new FilterPattern("A"), new FilterPattern("A"),       "Widen the stereo image."),
          new Filter(false, false, false, "ebur128",           new FilterPattern("A"), new FilterPattern("N"),       "EBU R128 scanner."),
          new Filter(true, true, true, "equalizer",         new FilterPattern("A"), new FilterPattern("A"),       "Apply two-pole peaking equalization (EQ) filter."),
          new Filter(true, false, true, "extrastereo",       new FilterPattern("A"), new FilterPattern("A"),       "Increase difference between stereo audio channels."),
          new Filter(false, false, true, "firequalizer",      new FilterPattern("A"), new FilterPattern("A"),       "Finite Impulse Response Equalizer."),
          new Filter(false, false, false, "flanger",           new FilterPattern("A"), new FilterPattern("A"),       "Apply a flanging effect to the audio."),
          new Filter(false, false, false, "haas",              new FilterPattern("A"), new FilterPattern("A"),       "Apply Haas Stereo Enhancer."),
          new Filter(false, false, false, "hdcd",              new FilterPattern("A"), new FilterPattern("A"),       "Apply High Definition Compatible Digital (HDCD) decoding."),
          new Filter(false, true, false, "headphone",         new FilterPattern("N"), new FilterPattern("A"),       "Apply headphone binaural spatialization with HRTFs in additional streams."),
          new Filter(true, true, true, "highpass",          new FilterPattern("A"), new FilterPattern("A"),       "Apply a high-pass filter with 3dB point frequency."),
          new Filter(true, true, true, "highshelf",         new FilterPattern("A"), new FilterPattern("A"),       "Apply a high shelf filter."),
          new Filter(false, false, false, "join",              new FilterPattern("N"), new FilterPattern("A"),       "Join multiple audio streams into multi-channel output."),
          new Filter(false, false, false, "loudnorm",          new FilterPattern("A"), new FilterPattern("A"),       "EBU R128 loudness normalization"),
          new Filter(true, true, true, "lowpass",           new FilterPattern("A"), new FilterPattern("A"),       "Apply a low-pass filter with 3dB point frequency."),
          new Filter(true, true, true, "lowshelf",          new FilterPattern("A"), new FilterPattern("A"),       "Apply a low shelf filter."),
          new Filter(false, false, false, "mcompand",          new FilterPattern("A"), new FilterPattern("A"),       "Multiband Compress or expand audio dynamic range."),
          new Filter(false, false, false, "pan",               new FilterPattern("A"), new FilterPattern("A"),       "Remix channels with coefficients (panning)."),
          new Filter(false, false, false, "replaygain",        new FilterPattern("A"), new FilterPattern("A"),       "ReplayGain scanner."),
          new Filter(false, false, true, "rubberband",        new FilterPattern("A"), new FilterPattern("A"),       "Apply time-stretching and pitch-shifting."),
          new Filter(false, false, true, "sidechaincompress", new FilterPattern("AA"), new FilterPattern("A"),      "Sidechain compressor."),
          new Filter(true, false, true, "sidechaingate",     new FilterPattern("AA"), new FilterPattern("A"),      "Audio sidechain gate."),
          new Filter(false, false, false, "silencedetect",     new FilterPattern("A"), new FilterPattern("A"),       "Detect silence."),
          new Filter(true, false, true, "silenceremove",     new FilterPattern("A"), new FilterPattern("A"),       "Remove silence."),
          new Filter(true, false, true, "speechnorm",        new FilterPattern("A"), new FilterPattern("A"),       "Speech Normalizer."),
          new Filter(true, false, true, "stereotools",       new FilterPattern("A"), new FilterPattern("A"),       "Apply various stereo tools."),
          new Filter(true, false, true, "stereowiden",       new FilterPattern("A"), new FilterPattern("A"),       "Apply stereo widening effect."),
          new Filter(false, false, false, "superequalizer",    new FilterPattern("A"), new FilterPattern("A"),       "Apply 18 band equalization filter."),
          new Filter(false, true, true, "surround",          new FilterPattern("A"), new FilterPattern("A"),       "Apply audio surround upmix filter."),
          new Filter(true, true, true, "tiltshelf",         new FilterPattern("A"), new FilterPattern("A"),       "Apply a tilt shelf filter."),
          new Filter(true, true, true, "treble",            new FilterPattern("A"), new FilterPattern("A"),       "Boost or cut upper frequencies."),
          new Filter(true, false, false, "tremolo",           new FilterPattern("A"), new FilterPattern("A"),       "Apply tremolo effect."),
          new Filter(true, false, false, "vibrato",           new FilterPattern("A"), new FilterPattern("A"),       "Apply vibrato effect."),
          new Filter(true, false, true, "virtualbass",       new FilterPattern("A"), new FilterPattern("A"),       "Audio Virtual Bass."),
          new Filter(true, false, true, "volume",            new FilterPattern("A"), new FilterPattern("A"),       "Change input volume."),
          new Filter(false, false, false, "volumedetect",      new FilterPattern("A"), new FilterPattern("A"),       "Detect audio volume."),
          new Filter(false, false, false, "aevalsrc",          new FilterPattern("|"), new FilterPattern("A"),       "Generate an audio signal generated by an expression."),
          new Filter(false, false, false, "afdelaysrc",        new FilterPattern("|"), new FilterPattern("A"),       "Generate a Fractional delay FIR coefficients."),
          new Filter(false, false, false, "afireqsrc",         new FilterPattern("|"), new FilterPattern("A"),       "Generate a FIR equalizer coefficients audio stream."),
          new Filter(false, false, false, "afirsrc",           new FilterPattern("|"), new FilterPattern("A"),       "Generate a FIR coefficients audio stream."),
          new Filter(false, false, false, "anoisesrc",         new FilterPattern("|"), new FilterPattern("A"),       "Generate a noise audio signal."),
          new Filter(false, false, false, "anullsrc",          new FilterPattern("|"), new FilterPattern("A"),       "Null audio source, return empty audio frames."),
          new Filter(false, false, false, "hilbert",           new FilterPattern("|"), new FilterPattern("A"),       "Generate a Hilbert transform FIR coefficients."),
          new Filter(false, false, false, "sinc",              new FilterPattern("|"), new FilterPattern("A"),       "Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients."),
          new Filter(false, false, false, "sine",              new FilterPattern("|"), new FilterPattern("A"),       "Generate sine wave audio signal."),
          new Filter(false, false, false, "anullsink",         new FilterPattern("A"), new FilterPattern("|"),       "Do absolutely nothing with the input audio."),
          new Filter(false, false, false, "addroi",            new FilterPattern("V"), new FilterPattern("V"),       "Add region of interest to frame."),
          new Filter(false, false, false, "alphaextract",      new FilterPattern("V"), new FilterPattern("V"),       "Extract an alpha channel as a grayscale image component."),
          new Filter(true, false, false, "alphamerge",        new FilterPattern("VV"), new FilterPattern("V"),      "Copy the luma value of the second input into the alpha channel of the first input."),
          new Filter(true, true, true, "amplify",           new FilterPattern("V"), new FilterPattern("V"),       "Amplify changes between successive video frames."),
          new Filter(false, false, false, "ass",               new FilterPattern("V"), new FilterPattern("V"),       "Render ASS subtitles onto input video using the libass library."),
          new Filter(true, true, true, "atadenoise",        new FilterPattern("V"), new FilterPattern("V"),       "Apply an Adaptive Temporal Averaging Denoiser."),
          new Filter(true, false, true, "avgblur",           new FilterPattern("V"), new FilterPattern("V"),       "Apply Average Blur filter."),
          new Filter(true, true, true, "backgroundkey",     new FilterPattern("V"), new FilterPattern("V"),       "Turns a static background into transparency."),
          new Filter(true, false, true, "bbox",              new FilterPattern("V"), new FilterPattern("V"),       "Compute bounding box for each frame."),
          new Filter(false, false, false, "bench",             new FilterPattern("V"), new FilterPattern("V"),       "Benchmark part of a filtergraph."),
          new Filter(true, true, true, "bilateral",         new FilterPattern("V"), new FilterPattern("V"),       "Apply Bilateral filter."),
          new Filter(true, false, false, "bitplanenoise",     new FilterPattern("V"), new FilterPattern("V"),       "Measure bit plane noise."),
          new Filter(false, true, false, "blackdetect",       new FilterPattern("V"), new FilterPattern("V"),       "Detect video intervals that are (almost) black."),
          new Filter(false, false, false, "blackframe",        new FilterPattern("V"), new FilterPattern("V"),       "Detect frames that are (almost) black."),
          new Filter(true, true, true, "blend",             new FilterPattern("VV"), new FilterPattern("V"),      "Blend two video frames into each other."),
          new Filter(false, false, false, "blockdetect",       new FilterPattern("V"), new FilterPattern("V"),       "Blockdetect filter."),
          new Filter(false, false, false, "blurdetect",        new FilterPattern("V"), new FilterPattern("V"),       "Blurdetect filter."),
          new Filter(true, true, false, "bm3d",              new FilterPattern("N"), new FilterPattern("V"),       "Block-Matching 3D denoiser."),
          new Filter(true, false, false, "boxblur",           new FilterPattern("V"), new FilterPattern("V"),       "Blur the input."),
          new Filter(true, true, false, "bwdif",             new FilterPattern("V"), new FilterPattern("V"),       "Deinterlace the input image."),
          new Filter(true, true, true, "cas",               new FilterPattern("V"), new FilterPattern("V"),       "Contrast Adaptive Sharpen."),
          new Filter(false, false, false, "ccrepack",          new FilterPattern("V"), new FilterPattern("V"),       "Repack CEA-708 closed caption metadata"),
          new Filter(true, true, true, "chromahold",        new FilterPattern("V"), new FilterPattern("V"),       "Turns a certain color range into gray."),
          new Filter(true, true, true, "chromakey",         new FilterPattern("V"), new FilterPattern("V"),       "Turns a certain color into transparency. Operates on YUV colors."),
          new Filter(true, true, true, "chromanr",          new FilterPattern("V"), new FilterPattern("V"),       "Reduce chrominance noise."),
          new Filter(true, true, true, "chromashift",       new FilterPattern("V"), new FilterPattern("V"),       "Shift chroma."),
          new Filter(false, false, false, "ciescope",          new FilterPattern("V"), new FilterPattern("V"),       "Video CIE scope."),
          new Filter(true, false, false, "codecview",         new FilterPattern("V"), new FilterPattern("V"),       "Visualize information about some codecs."),
          new Filter(true, true, true, "colorbalance",      new FilterPattern("V"), new FilterPattern("V"),       "Adjust the color balance."),
          new Filter(true, true, true, "colorchannelmixer", new FilterPattern("V"), new FilterPattern("V"),       "Adjust colors by mixing color channels."),
          new Filter(true, true, true, "colorcontrast",     new FilterPattern("V"), new FilterPattern("V"),       "Adjust color contrast between RGB components."),
          new Filter(true, true, true, "colorcorrect",      new FilterPattern("V"), new FilterPattern("V"),       "Adjust color white balance selectively for blacks and whites."),
          new Filter(true, true, true, "colorize",          new FilterPattern("V"), new FilterPattern("V"),       "Overlay a solid color on the video stream."),
          new Filter(true, true, true, "colorkey",          new FilterPattern("V"), new FilterPattern("V"),       "Turns a certain color into transparency. Operates on RGB colors."),
          new Filter(true, true, true, "colorhold",         new FilterPattern("V"), new FilterPattern("V"),       "Turns a certain color range into gray. Operates on RGB colors."),
          new Filter(true, true, true, "colorlevels",       new FilterPattern("V"), new FilterPattern("V"),       "Adjust the color levels."),
          new Filter(true, true, true, "colormap",          new FilterPattern("VVV"), new FilterPattern("V"),     "Apply custom Color Maps to video stream."),
          new Filter(true, true, false, "colormatrix",       new FilterPattern("V"), new FilterPattern("V"),       "Convert color matrix."),
          new Filter(true, true, false, "colorspace",        new FilterPattern("V"), new FilterPattern("V"),       "Convert between colorspaces."),
          new Filter(true, true, true, "colortemperature",  new FilterPattern("V"), new FilterPattern("V"),       "Adjust color temperature of video."),
          new Filter(true, true, true, "convolution",       new FilterPattern("V"), new FilterPattern("V"),       "Apply convolution filter."),
          new Filter(true, true, false, "convolve",          new FilterPattern("VV"), new FilterPattern("V"),      "Convolve first video stream with second video stream."),
          new Filter(false, false, false, "copy",              new FilterPattern("V"), new FilterPattern("V"),       "Copy the input video unchanged to the output."),
          new Filter(false, false, false, "coreimage",         new FilterPattern("V"), new FilterPattern("V"),       "Video filtering using CoreImage API."),
          new Filter(true, false, false, "corr",              new FilterPattern("VV"), new FilterPattern("V"),      "Calculate the correlation between two video streams."),
          new Filter(false, false, false, "cover_rect",        new FilterPattern("V"), new FilterPattern("V"),       "Find and cover a user specified object."),
          new Filter(false, false, true, "crop",              new FilterPattern("V"), new FilterPattern("V"),       "Crop the input video."),
          new Filter(true, false, true, "cropdetect",        new FilterPattern("V"), new FilterPattern("V"),       "Auto-detect crop size."),
          new Filter(false, false, false, "cue",               new FilterPattern("V"), new FilterPattern("V"),       "Delay filtering to match a cue."),
          new Filter(true, true, true, "curves",            new FilterPattern("V"), new FilterPattern("V"),       "Adjust components curves."),
          new Filter(false, true, true, "datascope",         new FilterPattern("V"), new FilterPattern("V"),       "Video data analysis."),
          new Filter(true, false, true, "dblur",             new FilterPattern("V"), new FilterPattern("V"),       "Apply Directional Blur filter."),
          new Filter(true, true, false, "dctdnoiz",          new FilterPattern("V"), new FilterPattern("V"),       "Denoise frames using 2D DCT."),
          new Filter(true, true, true, "deband",            new FilterPattern("V"), new FilterPattern("V"),       "Debands video."),
          new Filter(true, false, true, "deblock",           new FilterPattern("V"), new FilterPattern("V"),       "Deblock video."),
          new Filter(false, false, false, "decimate",          new FilterPattern("N"), new FilterPattern("V"),       "Decimate frames (post field matching filter)."),
          new Filter(true, true, false, "deconvolve",        new FilterPattern("VV"), new FilterPattern("V"),      "Deconvolve first video stream with second video stream."),
          new Filter(true, true, false, "dedot",             new FilterPattern("V"), new FilterPattern("V"),       "Reduce cross-luminance and cross-color."),
          new Filter(true, true, true, "deflate",           new FilterPattern("V"), new FilterPattern("V"),       "Apply deflate effect."),
          new Filter(false, false, false, "deflicker",         new FilterPattern("V"), new FilterPattern("V"),       "Remove temporal frame luminance variations."),
          new Filter(false, false, false, "dejudder",          new FilterPattern("V"), new FilterPattern("V"),       "Remove judder produced by pullup."),
          new Filter(true, false, false, "delogo",            new FilterPattern("V"), new FilterPattern("V"),       "Remove logo from input video."),
          new Filter(true, false, false, "derain",            new FilterPattern("V"), new FilterPattern("V"),       "Apply derain filter to the input."),
          new Filter(false, false, false, "deshake",           new FilterPattern("V"), new FilterPattern("V"),       "Stabilize shaky video."),
          new Filter(true, true, true, "despill",           new FilterPattern("V"), new FilterPattern("V"),       "Despill video."),
          new Filter(false, false, false, "detelecine",        new FilterPattern("V"), new FilterPattern("V"),       "Apply an inverse telecine pattern."),
          new Filter(true, true, true, "dilation",          new FilterPattern("V"), new FilterPattern("V"),       "Apply dilation effect."),
          new Filter(true, true, true, "displace",          new FilterPattern("VVV"), new FilterPattern("V"),     "Displace pixels."),
          new Filter(false, false, false, "dnn_classify",      new FilterPattern("V"), new FilterPattern("V"),       "Apply DNN classify filter to the input."),
          new Filter(false, false, false, "dnn_detect",        new FilterPattern("V"), new FilterPattern("V"),       "Apply DNN detect filter to the input."),
          new Filter(false, false, false, "dnn_processing",    new FilterPattern("V"), new FilterPattern("V"),       "Apply DNN processing filter to the input."),
          new Filter(false, true, false, "doubleweave",       new FilterPattern("V"), new FilterPattern("V"),       "Weave input video fields into double number of frames."),
          new Filter(true, false, true, "drawbox",           new FilterPattern("V"), new FilterPattern("V"),       "Draw a colored box on the input video."),
          new Filter(false, false, false, "drawgraph",         new FilterPattern("V"), new FilterPattern("V"),       "Draw a graph using input video metadata."),
          new Filter(true, false, true, "drawgrid",          new FilterPattern("V"), new FilterPattern("V"),       "Draw a colored grid on the input video."),
          new Filter(true, false, true, "drawtext",          new FilterPattern("V"), new FilterPattern("V"),       "Draw text on top of video frames using libfreetype library."),
          new Filter(true, false, false, "edgedetect",        new FilterPattern("V"), new FilterPattern("V"),       "Detect and draw edge."),
          new Filter(false, false, false, "elbg",              new FilterPattern("V"), new FilterPattern("V"),       "Apply posterize effect, using the ELBG algorithm."),
          new Filter(true, false, false, "entropy",           new FilterPattern("V"), new FilterPattern("V"),       "Measure video frames entropy."),
          new Filter(false, true, false, "epx",               new FilterPattern("V"), new FilterPattern("V"),       "Scale the input using EPX algorithm."),
          new Filter(true, false, true, "eq",                new FilterPattern("V"), new FilterPattern("V"),       "Adjust brightness, contrast, gamma, and saturation."),
          new Filter(true, true, true, "erosion",           new FilterPattern("V"), new FilterPattern("V"),       "Apply erosion effect."),
          new Filter(true, true, true, "estdif",            new FilterPattern("V"), new FilterPattern("V"),       "Apply Edge Slope Tracing deinterlace."),
          new Filter(true, true, true, "exposure",          new FilterPattern("V"), new FilterPattern("V"),       "Adjust exposure of the video stream."),
          new Filter(false, false, false, "extractplanes",     new FilterPattern("V"), new FilterPattern("N"),       "Extract planes as grayscale frames."),
          new Filter(true, true, false, "fade",              new FilterPattern("V"), new FilterPattern("V"),       "Fade in/out input video."),
          new Filter(false, false, true, "feedback",          new FilterPattern("VV"), new FilterPattern("VV"),     "Apply feedback video filter."),
          new Filter(true, true, true, "fftdnoiz",          new FilterPattern("V"), new FilterPattern("V"),       "Denoise frames using 3D FFT."),
          new Filter(true, true, false, "fftfilt",           new FilterPattern("V"), new FilterPattern("V"),       "Apply arbitrary expressions to pixels in frequency domain."),
          new Filter(false, false, false, "field",             new FilterPattern("V"), new FilterPattern("V"),       "Extract a field from the input video."),
          new Filter(false, false, false, "fieldhint",         new FilterPattern("V"), new FilterPattern("V"),       "Field matching using hints."),
          new Filter(false, false, false, "fieldmatch",        new FilterPattern("N"), new FilterPattern("V"),       "Field matching for inverse telecine."),
          new Filter(true, false, false, "fieldorder",        new FilterPattern("V"), new FilterPattern("V"),       "Set the field order."),
          new Filter(true, false, true, "fillborders",       new FilterPattern("V"), new FilterPattern("V"),       "Fill borders of the input video."),
          new Filter(false, false, false, "find_rect",         new FilterPattern("V"), new FilterPattern("V"),       "Find a user specified object."),
          new Filter(true, false, false, "floodfill",         new FilterPattern("V"), new FilterPattern("V"),       "Fill area with same color with another color."),
          new Filter(false, false, false, "format",            new FilterPattern("V"), new FilterPattern("V"),       "Convert the input video to one of the specified pixel formats."),
          new Filter(false, false, false, "fps",               new FilterPattern("V"), new FilterPattern("V"),       "Force constant framerate."),
          new Filter(false, false, false, "framepack",         new FilterPattern("VV"), new FilterPattern("V"),      "Generate a frame packed stereoscopic video."),
          new Filter(false, true, false, "framerate",         new FilterPattern("V"), new FilterPattern("V"),       "Upsamples or downsamples progressive source between specified frame rates."),
          new Filter(true, false, false, "framestep",         new FilterPattern("V"), new FilterPattern("V"),       "Select one frame every N frames."),
          new Filter(false, false, false, "freezedetect",      new FilterPattern("V"), new FilterPattern("V"),       "Detects frozen video input."),
          new Filter(false, false, false, "freezeframes",      new FilterPattern("VV"), new FilterPattern("V"),      "Freeze video frames."),
          new Filter(true, false, true, "frei0r",            new FilterPattern("V"), new FilterPattern("V"),       "Apply a frei0r effect."),
          new Filter(true, false, false, "fspp",              new FilterPattern("V"), new FilterPattern("V"),       "Apply Fast Simple Post-processing filter."),
          new Filter(true, true, true, "gblur",             new FilterPattern("V"), new FilterPattern("V"),       "Apply Gaussian Blur filter."),
          new Filter(true, true, false, "geq",               new FilterPattern("V"), new FilterPattern("V"),       "Apply generic equation to each pixel."),
          new Filter(true, false, false, "gradfun",           new FilterPattern("V"), new FilterPattern("V"),       "Debands video quickly using gradients."),
          new Filter(false, false, true, "graphmonitor",      new FilterPattern("V"), new FilterPattern("V"),       "Show various filtergraph stats."),
          new Filter(true, true, false, "grayworld",         new FilterPattern("V"), new FilterPattern("V"),       "Adjust white balance using LAB gray world algorithm"),
          new Filter(true, true, false, "greyedge",          new FilterPattern("V"), new FilterPattern("V"),       "Estimates scene illumination by grey edge assumption."),
          new Filter(true, true, true, "guided",            new FilterPattern("N"), new FilterPattern("V"),       "Apply Guided filter."),
          new Filter(true, true, true, "haldclut",          new FilterPattern("VV"), new FilterPattern("V"),      "Adjust colors using a Hald CLUT."),
          new Filter(true, true, false, "hflip",             new FilterPattern("V"), new FilterPattern("V"),       "Horizontally flip the input video."),
          new Filter(true, false, false, "histeq",            new FilterPattern("V"), new FilterPattern("V"),       "Apply global color histogram equalization."),
          new Filter(false, false, false, "histogram",         new FilterPattern("V"), new FilterPattern("V"),       "Compute and draw a histogram."),
          new Filter(true, true, true, "hqdn3d",            new FilterPattern("V"), new FilterPattern("V"),       "Apply a High Quality 3D Denoiser."),
          new Filter(false, true, false, "hqx",               new FilterPattern("V"), new FilterPattern("V"),       "Scale the input by 2, 3 or 4 using the hq*x magnification algorithm."),
          new Filter(false, true, false, "hstack",            new FilterPattern("N"), new FilterPattern("V"),       "Stack video inputs horizontally."),
          new Filter(true, true, true, "hsvhold",           new FilterPattern("V"), new FilterPattern("V"),       "Turns a certain HSV range into gray."),
          new Filter(true, true, true, "hsvkey",            new FilterPattern("V"), new FilterPattern("V"),       "Turns a certain HSV range into transparency. Operates on YUV colors."),
          new Filter(true, false, true, "hue",               new FilterPattern("V"), new FilterPattern("V"),       "Adjust the hue and saturation of the input video."),
          new Filter(true, true, true, "huesaturation",     new FilterPattern("V"), new FilterPattern("V"),       "Apply hue-saturation-intensity adjustments."),
          new Filter(false, false, false, "hwdownload",        new FilterPattern("V"), new FilterPattern("V"),       "Download a hardware frame to a normal frame"),
          new Filter(false, false, false, "hwmap",             new FilterPattern("V"), new FilterPattern("V"),       "Map hardware frames"),
          new Filter(false, false, false, "hwupload",          new FilterPattern("V"), new FilterPattern("V"),       "Upload a normal frame to a hardware frame"),
          new Filter(true, false, false, "hysteresis",        new FilterPattern("VV"), new FilterPattern("V"),      "Grow first stream into second stream by connecting components."),
          new Filter(true, true, false, "identity",          new FilterPattern("VV"), new FilterPattern("V"),      "Calculate the Identity between two video streams."),
          new Filter(false, false, false, "idet",              new FilterPattern("V"), new FilterPattern("V"),       "Interlace detect Filter."),
          new Filter(true, false, true, "il",                new FilterPattern("V"), new FilterPattern("V"),       "Deinterleave or interleave fields."),
          new Filter(true, true, true, "inflate",           new FilterPattern("V"), new FilterPattern("V"),       "Apply inflate effect."),
          new Filter(false, false, false, "interlace",         new FilterPattern("V"), new FilterPattern("V"),       "Convert progressive video into interlaced."),
          new Filter(false, false, false, "interleave",        new FilterPattern("N"), new FilterPattern("V"),       "Temporally interleave video inputs."),
          new Filter(false, false, false, "kerndeint",         new FilterPattern("V"), new FilterPattern("V"),       "Apply kernel deinterlacing to the input."),
          new Filter(true, true, true, "kirsch",            new FilterPattern("V"), new FilterPattern("V"),       "Apply kirsch operator."),
          new Filter(true, true, true, "lagfun",            new FilterPattern("V"), new FilterPattern("V"),       "Slowly update darker pixels."),
          new Filter(true, false, false, "latency",           new FilterPattern("V"), new FilterPattern("V"),       "Report video filtering latency."),
          new Filter(true, true, true, "lenscorrection",    new FilterPattern("V"), new FilterPattern("V"),       "Rectify the image by correcting for lens distortion."),
          new Filter(false, false, false, "libvmaf",           new FilterPattern("VV"), new FilterPattern("V"),      "Calculate the VMAF between two video streams."),
          new Filter(true, true, true, "limitdiff",         new FilterPattern("N"), new FilterPattern("V"),       "Apply filtering with limiting difference."),
          new Filter(true, true, true, "limiter",           new FilterPattern("V"), new FilterPattern("V"),       "Limit pixels components to the specified range."),
          new Filter(false, false, false, "loop",              new FilterPattern("V"), new FilterPattern("V"),       "Loop video frames."),
          new Filter(true, true, true, "lumakey",           new FilterPattern("V"), new FilterPattern("V"),       "Turns a certain luma into transparency."),
          new Filter(true, true, true, "lut",               new FilterPattern("V"), new FilterPattern("V"),       "Compute and apply a lookup table to the RGB/YUV input video."),
          new Filter(true, true, true, "lut1d",             new FilterPattern("V"), new FilterPattern("V"),       "Adjust colors using a 1D LUT."),
          new Filter(true, true, true, "lut2",              new FilterPattern("VV"), new FilterPattern("V"),      "Compute and apply a lookup table from two video inputs."),
          new Filter(true, true, true, "lut3d",             new FilterPattern("V"), new FilterPattern("V"),       "Adjust colors using a 3D LUT."),
          new Filter(true, true, true, "lutrgb",            new FilterPattern("V"), new FilterPattern("V"),       "Compute and apply a lookup table to the RGB input video."),
          new Filter(true, true, true, "lutyuv",            new FilterPattern("V"), new FilterPattern("V"),       "Compute and apply a lookup table to the YUV input video."),
          new Filter(true, true, true, "maskedclamp",       new FilterPattern("VVV"), new FilterPattern("V"),     "Clamp first stream with second stream and third stream."),
          new Filter(true, true, true, "maskedmax",         new FilterPattern("VVV"), new FilterPattern("V"),     "Apply filtering with maximum difference of two streams."),
          new Filter(true, true, true, "maskedmerge",       new FilterPattern("VVV"), new FilterPattern("V"),     "Merge first stream with second stream using third stream as mask."),
          new Filter(true, true, true, "maskedmin",         new FilterPattern("VVV"), new FilterPattern("V"),     "Apply filtering with minimum difference of two streams."),
          new Filter(true, true, true, "maskedthreshold",   new FilterPattern("VV"), new FilterPattern("V"),      "Pick pixels comparing absolute difference of two streams with threshold."),
          new Filter(true, true, true, "maskfun",           new FilterPattern("V"), new FilterPattern("V"),       "Create Mask."),
          new Filter(false, false, false, "mcdeint",           new FilterPattern("V"), new FilterPattern("V"),       "Apply motion compensating deinterlacing."),
          new Filter(true, true, true, "median",            new FilterPattern("V"), new FilterPattern("V"),       "Apply Median filter."),
          new Filter(false, false, false, "mergeplanes",       new FilterPattern("N"), new FilterPattern("V"),       "Merge planes."),
          new Filter(false, false, false, "mestimate",         new FilterPattern("V"), new FilterPattern("V"),       "Generate motion vectors."),
          new Filter(true, false, false, "metadata",          new FilterPattern("V"), new FilterPattern("V"),       "Manipulate video frame metadata."),
          new Filter(true, false, false, "midequalizer",      new FilterPattern("VV"), new FilterPattern("V"),      "Apply Midway Equalization."),
          new Filter(false, false, false, "minterpolate",      new FilterPattern("V"), new FilterPattern("V"),       "Frame rate conversion using Motion Interpolation."),
          new Filter(true, true, true, "mix",               new FilterPattern("N"), new FilterPattern("V"),       "Mix video inputs."),
          new Filter(true, true, true, "monochrome",        new FilterPattern("V"), new FilterPattern("V"),       "Convert video to gray using custom color filter."),
          new Filter(true, true, true, "morpho",            new FilterPattern("VV"), new FilterPattern("V"),      "Apply Morphological filter."),
          new Filter(false, false, false, "mpdecimate",        new FilterPattern("V"), new FilterPattern("V"),       "Remove near-duplicate frames."),
          new Filter(true, true, false, "msad",              new FilterPattern("VV"), new FilterPattern("V"),      "Calculate the MSAD between two video streams."),
          new Filter(true, true, true, "multiply",          new FilterPattern("VV"), new FilterPattern("V"),      "Multiply first video stream with second video stream."),
          new Filter(true, true, true, "negate",            new FilterPattern("V"), new FilterPattern("V"),       "Negate input video."),
          new Filter(true, true, false, "nlmeans",           new FilterPattern("V"), new FilterPattern("V"),       "Non-local means denoiser."),
          new Filter(true, true, true, "nnedi",             new FilterPattern("V"), new FilterPattern("V"),       "Apply neural network edge directed interpolation intra-only deinterlacer."),
          new Filter(false, false, false, "noformat",          new FilterPattern("V"), new FilterPattern("V"),       "Force libavfilter not to use any of the specified pixel formats for the input to the next filter."),
          new Filter(true, true, false, "noise",             new FilterPattern("V"), new FilterPattern("V"),       "Add noise."),
          new Filter(true, false, true, "normalize",         new FilterPattern("V"), new FilterPattern("V"),       "Normalize RGB video."),
          new Filter(false, false, false, "null",              new FilterPattern("V"), new FilterPattern("V"),       "Pass the source unchanged to the output."),
          new Filter(false, false, false, "ocr",               new FilterPattern("V"), new FilterPattern("V"),       "Optical Character Recognition."),
          new Filter(true, false, true, "oscilloscope",      new FilterPattern("V"), new FilterPattern("V"),       "2D Video Oscilloscope."),
          new Filter(true, true, true, "overlay",           new FilterPattern("VV"), new FilterPattern("V"),      "Overlay a video source on top of the input."),
          new Filter(true, false, false, "owdenoise",         new FilterPattern("V"), new FilterPattern("V"),       "Denoise using wavelets."),
          new Filter(false, false, false, "pad",               new FilterPattern("V"), new FilterPattern("V"),       "Pad the input video."),
          new Filter(false, false, false, "palettegen",        new FilterPattern("V"), new FilterPattern("V"),       "Find the optimal palette for a given stream."),
          new Filter(false, false, false, "paletteuse",        new FilterPattern("VV"), new FilterPattern("V"),      "Use a palette to downsample an input video stream."),
          new Filter(true, false, true, "perms",             new FilterPattern("V"), new FilterPattern("V"),       "Set permissions for the output video frame."),
          new Filter(true, true, false, "perspective",       new FilterPattern("V"), new FilterPattern("V"),       "Correct the perspective of video."),
          new Filter(true, false, true, "phase",             new FilterPattern("V"), new FilterPattern("V"),       "Phase shift fields."),
          new Filter(false, false, false, "photosensitivity",  new FilterPattern("V"), new FilterPattern("V"),       "Filter out photosensitive epilepsy seizure-inducing flashes."),
          new Filter(false, false, false, "pixdesctest",       new FilterPattern("V"), new FilterPattern("V"),       "Test pixel format definitions."),
          new Filter(true, true, true, "pixelize",          new FilterPattern("V"), new FilterPattern("V"),       "Pixelize video."),
          new Filter(true, false, true, "pixscope",          new FilterPattern("V"), new FilterPattern("V"),       "Pixel data analysis."),
          new Filter(true, false, true, "pp",                new FilterPattern("V"), new FilterPattern("V"),       "Filter video using libpostproc."),
          new Filter(true, false, false, "pp7",               new FilterPattern("V"), new FilterPattern("V"),       "Apply Postprocessing 7 filter."),
          new Filter(true, true, false, "premultiply",       new FilterPattern("N"), new FilterPattern("V"),       "PreMultiply first stream with first plane of second stream."),
          new Filter(true, true, true, "prewitt",           new FilterPattern("V"), new FilterPattern("V"),       "Apply prewitt operator."),
          new Filter(true, true, true, "pseudocolor",       new FilterPattern("V"), new FilterPattern("V"),       "Make pseudocolored video frames."),
          new Filter(true, true, false, "psnr",              new FilterPattern("VV"), new FilterPattern("V"),      "Calculate the PSNR between two video streams."),
          new Filter(false, false, false, "pullup",            new FilterPattern("V"), new FilterPattern("V"),       "Pullup from field sequence to frames."),
          new Filter(true, false, false, "qp",                new FilterPattern("V"), new FilterPattern("V"),       "Change video quantization parameters."),
          new Filter(false, false, false, "random",            new FilterPattern("V"), new FilterPattern("V"),       "Return random frames."),
          new Filter(true, true, true, "readeia608",        new FilterPattern("V"), new FilterPattern("V"),       "Read EIA-608 Closed Caption codes from input video and write them to frame metadata."),
          new Filter(false, false, false, "readvitc",          new FilterPattern("V"), new FilterPattern("V"),       "Read vertical interval timecode and write it to frame metadata."),
          new Filter(false, false, true, "realtime",          new FilterPattern("V"), new FilterPattern("V"),       "Slow down filtering to match realtime."),
          new Filter(false, true, false, "remap",             new FilterPattern("VVV"), new FilterPattern("V"),     "Remap pixels."),
          new Filter(true, true, false, "removegrain",       new FilterPattern("V"), new FilterPattern("V"),       "Remove grain."),
          new Filter(true, false, false, "removelogo",        new FilterPattern("V"), new FilterPattern("V"),       "Remove a TV logo based on a mask image."),
          new Filter(false, false, false, "repeatfields",      new FilterPattern("V"), new FilterPattern("V"),       "Hard repeat fields based on MPEG repeat field flag."),
          new Filter(false, false, false, "reverse",           new FilterPattern("V"), new FilterPattern("V"),       "Reverse a clip."),
          new Filter(true, true, true, "rgbashift",         new FilterPattern("V"), new FilterPattern("V"),       "Shift RGBA."),
          new Filter(true, true, true, "roberts",           new FilterPattern("V"), new FilterPattern("V"),       "Apply roberts cross operator."),
          new Filter(true, true, true, "rotate",            new FilterPattern("V"), new FilterPattern("V"),       "Rotate the input image."),
          new Filter(true, false, false, "sab",               new FilterPattern("V"), new FilterPattern("V"),       "Apply shape adaptive blur."),
          new Filter(false, false, true, "scale",             new FilterPattern("V"), new FilterPattern("V"),       "Scale the input video size and/or convert the image format."),
          new Filter(false, false, false, "scale_vt",          new FilterPattern("V"), new FilterPattern("V"),       "Scale Videotoolbox frames"),
          new Filter(false, false, true, "scale2ref",         new FilterPattern("VV"), new FilterPattern("VV"),     "Scale the input video size and/or convert the image format to the given reference."),
          new Filter(false, false, false, "scdet",             new FilterPattern("V"), new FilterPattern("V"),       "Detect video scene change"),
          new Filter(true, true, true, "scharr",            new FilterPattern("V"), new FilterPattern("V"),       "Apply scharr operator."),
          new Filter(true, true, true, "scroll",            new FilterPattern("V"), new FilterPattern("V"),       "Scroll input video."),
          new Filter(false, false, false, "segment",           new FilterPattern("V"), new FilterPattern("N"),       "Segment video stream."),
          new Filter(false, false, false, "select",            new FilterPattern("V"), new FilterPattern("N"),       "Select video frames to pass in output."),
          new Filter(true, true, false, "selectivecolor",    new FilterPattern("V"), new FilterPattern("V"),       "Apply CMYK adjustments to specific color ranges."),
          new Filter(false, false, false, "sendcmd",           new FilterPattern("V"), new FilterPattern("V"),       "Send commands to filters."),
          new Filter(false, false, false, "separatefields",    new FilterPattern("V"), new FilterPattern("V"),       "Split input video frames into fields."),
          new Filter(false, false, false, "setdar",            new FilterPattern("V"), new FilterPattern("V"),       "Set the frame display aspect ratio."),
          new Filter(false, false, false, "setfield",          new FilterPattern("V"), new FilterPattern("V"),       "Force field for the output video frame."),
          new Filter(false, false, false, "setparams",         new FilterPattern("V"), new FilterPattern("V"),       "Force field, or color property for the output video frame."),
          new Filter(false, false, true, "setpts",            new FilterPattern("V"), new FilterPattern("V"),       "Set PTS for the output video frame."),
          new Filter(false, false, false, "setrange",          new FilterPattern("V"), new FilterPattern("V"),       "Force color range for the output video frame."),
          new Filter(false, false, false, "setsar",            new FilterPattern("V"), new FilterPattern("V"),       "Set the pixel sample aspect ratio."),
          new Filter(false, false, false, "settb",             new FilterPattern("V"), new FilterPattern("V"),       "Set timebase for the video output link."),
          new Filter(true, true, true, "shear",             new FilterPattern("V"), new FilterPattern("V"),       "Shear transform the input image."),
          new Filter(false, false, false, "showinfo",          new FilterPattern("V"), new FilterPattern("V"),       "Show textual information for each video frame."),
          new Filter(false, false, false, "showpalette",       new FilterPattern("V"), new FilterPattern("V"),       "Display frame palette."),
          new Filter(true, false, false, "shuffleframes",     new FilterPattern("V"), new FilterPattern("V"),       "Shuffle video frames."),
          new Filter(true, true, false, "shufflepixels",     new FilterPattern("V"), new FilterPattern("V"),       "Shuffle video pixels."),
          new Filter(true, false, false, "shuffleplanes",     new FilterPattern("V"), new FilterPattern("V"),       "Shuffle video planes."),
          new Filter(true, false, false, "sidedata",          new FilterPattern("V"), new FilterPattern("V"),       "Manipulate video frame side data."),
          new Filter(false, true, false, "signalstats",       new FilterPattern("V"), new FilterPattern("V"),       "Generate statistics from video analysis."),
          new Filter(false, false, false, "signature",         new FilterPattern("N"), new FilterPattern("V"),       "Calculate the MPEG-7 video signature"),
          new Filter(false, false, false, "siti",              new FilterPattern("V"), new FilterPattern("V"),       "Calculate spatial information (SI) and temporal information (TI)."),
          new Filter(true, false, false, "smartblur",         new FilterPattern("V"), new FilterPattern("V"),       "Blur the input video without impacting the outlines."),
          new Filter(true, true, true, "sobel",             new FilterPattern("V"), new FilterPattern("V"),       "Apply sobel operator."),
          new Filter(false, false, false, "split",             new FilterPattern("V"), new FilterPattern("N"),       "Pass on the input to N video outputs."),
          new Filter(true, false, true, "spp",               new FilterPattern("V"), new FilterPattern("V"),       "Apply a simple post processing filter."),
          new Filter(false, false, false, "sr",                new FilterPattern("V"), new FilterPattern("V"),       "Apply DNN-based image super resolution to the input."),
          new Filter(true, true, false, "ssim",              new FilterPattern("VV"), new FilterPattern("V"),      "Calculate the SSIM between two video streams."),
          new Filter(false, false, false, "ssim360",           new FilterPattern("VV"), new FilterPattern("V"),      "Calculate the SSIM between two 360 video streams."),
          new Filter(false, true, false, "stereo3d",          new FilterPattern("V"), new FilterPattern("V"),       "Convert video stereoscopic 3D view."),
          new Filter(false, false, true, "streamselect",      new FilterPattern("N"), new FilterPattern("N"),       "Select video streams"),
          new Filter(false, false, false, "subtitles",         new FilterPattern("V"), new FilterPattern("V"),       "Render text subtitles onto input video using the libass library."),
          new Filter(false, true, false, "super2xsai",        new FilterPattern("V"), new FilterPattern("V"),       "Scale the input by 2x using the Super2xSaI pixel art algorithm."),
          new Filter(true, false, true, "swaprect",          new FilterPattern("V"), new FilterPattern("V"),       "Swap 2 rectangular objects in video."),
          new Filter(true, false, false, "swapuv",            new FilterPattern("V"), new FilterPattern("V"),       "Swap U and V components."),
          new Filter(true, true, true, "tblend",            new FilterPattern("V"), new FilterPattern("V"),       "Blend successive frames."),
          new Filter(false, false, false, "telecine",          new FilterPattern("V"), new FilterPattern("V"),       "Apply a telecine pattern."),
          new Filter(false, false, false, "thistogram",        new FilterPattern("V"), new FilterPattern("V"),       "Compute and draw a temporal histogram."),
          new Filter(true, true, true, "threshold",         new FilterPattern("VVVV"), new FilterPattern("V"),    "Threshold first video stream using other video streams."),
          new Filter(true, true, false, "thumbnail",         new FilterPattern("V"), new FilterPattern("V"),       "Select the most representative frame in a given sequence of consecutive frames."),
          new Filter(false, false, false, "tile",              new FilterPattern("V"), new FilterPattern("V"),       "Tile several successive frames together."),
          new Filter(false, false, false, "tinterlace",        new FilterPattern("V"), new FilterPattern("V"),       "Perform temporal field interlacing."),
          new Filter(true, true, true, "tlut2",             new FilterPattern("V"), new FilterPattern("V"),       "Compute and apply a lookup table from two successive frames."),
          new Filter(true, true, true, "tmedian",           new FilterPattern("V"), new FilterPattern("V"),       "Pick median pixels from successive frames."),
          new Filter(true, false, false, "tmidequalizer",     new FilterPattern("V"), new FilterPattern("V"),       "Apply Temporal Midway Equalization."),
          new Filter(true, true, true, "tmix",              new FilterPattern("V"), new FilterPattern("V"),       "Mix successive video frames."),
          new Filter(false, true, false, "tonemap",           new FilterPattern("V"), new FilterPattern("V"),       "Conversion to/from different dynamic ranges."),
          new Filter(false, false, false, "tpad",              new FilterPattern("V"), new FilterPattern("V"),       "Temporarily pad video frames."),
          new Filter(false, true, false, "transpose",         new FilterPattern("V"), new FilterPattern("V"),       "Transpose input video."),
          new Filter(false, false, false, "transpose_vt",      new FilterPattern("V"), new FilterPattern("V"),       "Transpose Videotoolbox frames"),
          new Filter(false, false, false, "trim",              new FilterPattern("V"), new FilterPattern("V"),       "Pick one continuous section from the input, drop the rest."),
          new Filter(true, true, false, "unpremultiply",     new FilterPattern("N"), new FilterPattern("V"),       "UnPreMultiply first stream with first plane of second stream."),
          new Filter(true, true, false, "unsharp",           new FilterPattern("V"), new FilterPattern("V"),       "Sharpen or blur the input video."),
          new Filter(false, false, false, "untile",            new FilterPattern("V"), new FilterPattern("V"),       "Untile a frame into a sequence of frames."),
          new Filter(true, true, false, "uspp",              new FilterPattern("V"), new FilterPattern("V"),       "Apply Ultra Simple / Slow Post-processing filter."),
          new Filter(false, true, true, "v360",              new FilterPattern("V"), new FilterPattern("V"),       "Convert 360 projection of video."),
          new Filter(true, false, false, "vaguedenoiser",     new FilterPattern("V"), new FilterPattern("V"),       "Apply a Wavelet based Denoiser."),
          new Filter(true, true, true, "varblur",           new FilterPattern("VV"), new FilterPattern("V"),      "Apply Variable Blur filter."),
          new Filter(false, false, true, "vectorscope",       new FilterPattern("V"), new FilterPattern("V"),       "Video vectorscope."),
          new Filter(true, false, false, "vflip",             new FilterPattern("V"), new FilterPattern("V"),       "Flip the input video vertically."),
          new Filter(false, false, false, "vfrdet",            new FilterPattern("V"), new FilterPattern("V"),       "Variable frame rate detect filter."),
          new Filter(true, true, true, "vibrance",          new FilterPattern("V"), new FilterPattern("V"),       "Boost or alter saturation."),
          new Filter(false, false, false, "vidstabdetect",     new FilterPattern("V"), new FilterPattern("V"),       "Extract relative transformations, pass 1 of 2 for stabilization (see vidstabtransform for pass 2)."),
          new Filter(false, false, false, "vidstabtransform",  new FilterPattern("V"), new FilterPattern("V"),       "Transform the frames, pass 2 of 2 for stabilization (see vidstabdetect for pass 1)."),
          new Filter(true, true, false, "vif",               new FilterPattern("VV"), new FilterPattern("V"),      "Calculate the VIF between two video streams."),
          new Filter(true, false, false, "vignette",          new FilterPattern("V"), new FilterPattern("V"),       "Make or reverse a vignette effect."),
          new Filter(false, false, false, "vmafmotion",        new FilterPattern("V"), new FilterPattern("V"),       "Calculate the VMAF Motion score."),
          new Filter(false, true, false, "vstack",            new FilterPattern("N"), new FilterPattern("V"),       "Stack video inputs vertically."),
          new Filter(true, true, true, "w3fdif",            new FilterPattern("V"), new FilterPattern("V"),       "Apply Martin Weston three field deinterlace."),
          new Filter(false, true, true, "waveform",          new FilterPattern("V"), new FilterPattern("V"),       "Video waveform monitor."),
          new Filter(false, true, false, "weave",             new FilterPattern("V"), new FilterPattern("V"),       "Weave input video fields into frames."),
          new Filter(false, true, false, "xbr",               new FilterPattern("V"), new FilterPattern("V"),       "Scale the input using xBR algorithm."),
          new Filter(true, true, false, "xcorrelate",        new FilterPattern("VV"), new FilterPattern("V"),      "Cross-correlate first video stream with second video stream."),
          new Filter(false, true, false, "xfade",             new FilterPattern("VV"), new FilterPattern("V"),      "Cross fade one video with another video."),
          new Filter(true, true, true, "xmedian",           new FilterPattern("N"), new FilterPattern("V"),       "Pick median pixels from several video inputs."),
          new Filter(false, true, false, "xstack",            new FilterPattern("N"), new FilterPattern("V"),       "Stack video inputs into custom layout."),
          new Filter(true, true, false, "yadif",             new FilterPattern("V"), new FilterPattern("V"),       "Deinterlace the input image."),
          new Filter(true, false, false, "yadif_videotoolbox",new FilterPattern("V"), new FilterPattern("V"),      "YADIF for VideoToolbox frames using Metal compute"),
          new Filter(true, true, true, "yaepblur",          new FilterPattern("V"), new FilterPattern("V"),       "Yet another edge preserving blur filter."),
          new Filter(false, false, false, "zmq",               new FilterPattern("V"), new FilterPattern("V"),       "Receive commands through ZMQ and broker them to filters."),
          new Filter(false, false, false, "zoompan",           new FilterPattern("V"), new FilterPattern("V"),       "Apply Zoom & Pan effect."),
          new Filter(false, true, true, "zscale",            new FilterPattern("V"), new FilterPattern("V"),       "Apply resizing, colorspace and bit depth conversion."),
          new Filter(false, false, false, "allrgb",            new FilterPattern("|"), new FilterPattern("V"),       "Generate all RGB colors."),
          new Filter(false, false, false, "allyuv",            new FilterPattern("|"), new FilterPattern("V"),       "Generate all yuv colors."),
          new Filter(false, false, false, "cellauto",          new FilterPattern("|"), new FilterPattern("V"),       "Create pattern generated by an elementary cellular automaton."),
          new Filter(false, false, true, "color",             new FilterPattern("|"), new FilterPattern("V"),       "Provide an uniformly colored input."),
          new Filter(false, false, false, "colorchart",        new FilterPattern("|"), new FilterPattern("V"),       "Generate color checker chart."),
          new Filter(false, false, false, "colorspectrum",     new FilterPattern("|"), new FilterPattern("V"),       "Generate colors spectrum."),
          new Filter(false, false, false, "coreimagesrc",      new FilterPattern("|"), new FilterPattern("V"),       "Video source using image generators of CoreImage API."),
          new Filter(false, false, false, "frei0r_src",        new FilterPattern("|"), new FilterPattern("V"),       "Generate a frei0r source."),
          new Filter(false, true, false, "gradients",         new FilterPattern("|"), new FilterPattern("V"),       "Draw a gradients."),
          new Filter(false, false, false, "haldclutsrc",       new FilterPattern("|"), new FilterPattern("V"),       "Provide an identity Hald CLUT."),
          new Filter(false, false, false, "life",              new FilterPattern("|"), new FilterPattern("V"),       "Create life."),
          new Filter(false, false, false, "mandelbrot",        new FilterPattern("|"), new FilterPattern("V"),       "Render a Mandelbrot fractal."),
          new Filter(false, false, false, "mptestsrc",         new FilterPattern("|"), new FilterPattern("V"),       "Generate various test pattern."),
          new Filter(false, false, false, "nullsrc",           new FilterPattern("|"), new FilterPattern("V"),       "Null video source, return unprocessed video frames."),
          new Filter(false, false, false, "pal75bars",         new FilterPattern("|"), new FilterPattern("V"),       "Generate PAL 75% color bars."),
          new Filter(false, false, false, "pal100bars",        new FilterPattern("|"), new FilterPattern("V"),       "Generate PAL 100% color bars."),
          new Filter(false, false, false, "rgbtestsrc",        new FilterPattern("|"), new FilterPattern("V"),       "Generate RGB test pattern."),
          new Filter(false, true, false, "sierpinski",        new FilterPattern("|"), new FilterPattern("V"),       "Render a Sierpinski fractal."),
          new Filter(false, false, false, "smptebars",         new FilterPattern("|"), new FilterPattern("V"),       "Generate SMPTE color bars."),
          new Filter(false, false, false, "smptehdbars",       new FilterPattern("|"), new FilterPattern("V"),       "Generate SMPTE HD color bars."),
          new Filter(false, false, false, "testsrc",           new FilterPattern("|"), new FilterPattern("V"),       "Generate test pattern."),
          new Filter(false, false, false, "testsrc2",          new FilterPattern("|"), new FilterPattern("V"),       "Generate another test pattern."),
          new Filter(false, false, false, "yuvtestsrc",        new FilterPattern("|"), new FilterPattern("V"),       "Generate YUV test pattern."),
          new Filter(false, true, true, "zoneplate",         new FilterPattern("|"), new FilterPattern("V"),       "Generate zone-plate."),
          new Filter(false, false, false, "nullsink",          new FilterPattern("V"), new FilterPattern("|"),       "Do absolutely nothing with the input video."),
          new Filter(false, false, true, "a3dscope",          new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to 3d scope video output."),
          new Filter(false, false, false, "abitscope",         new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to audio bit scope video output."),
          new Filter(false, false, false, "adrawgraph",        new FilterPattern("A"), new FilterPattern("V"),       "Draw a graph using input audio metadata."),
          new Filter(false, false, true, "agraphmonitor",     new FilterPattern("A"), new FilterPattern("V"),       "Show various filtergraph stats."),
          new Filter(false, false, false, "ahistogram",        new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to histogram video output."),
          new Filter(false, false, false, "aphasemeter",       new FilterPattern("A"), new FilterPattern("N"),       "Convert input audio to phase meter video output."),
          new Filter(false, true, true, "avectorscope",      new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to vectorscope video output."),
          new Filter(false, false, true, "concat",            new FilterPattern("N"), new FilterPattern("N"),       "Concatenate audio and video streams."),
          new Filter(false, false, false, "showcqt",           new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to a CQT (Constant/Clamped Q Transform) spectrum video output."),
          new Filter(false, true, false, "showcwt",           new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to a CWT (Continuous Wavelet Transform) spectrum video output."),
          new Filter(false, false, false, "showfreqs",         new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to a frequencies video output."),
          new Filter(false, true, false, "showspatial",       new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to a spatial video output."),
          new Filter(false, true, false, "showspectrum",      new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to a spectrum video output."),
          new Filter(false, true, false, "showspectrumpic",   new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to a spectrum video output single picture."),
          new Filter(false, false, false, "showvolume",        new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio volume to video output."),
          new Filter(false, false, false, "showwaves",         new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to a video output."),
          new Filter(false, false, false, "showwavespic",      new FilterPattern("A"), new FilterPattern("V"),       "Convert input audio to a video output single picture."),
          new Filter(false, false, false, "spectrumsynth",     new FilterPattern("VV"), new FilterPattern("A"),      "Convert input spectrum videos to audio output."),
          new Filter(false, false, true, "avsynctest",        new FilterPattern("|"), new FilterPattern("AV"),      "Generate an Audio Video Sync Test."),
          new Filter(false, false, true, "amovie",            new FilterPattern("|"), new FilterPattern("N"),       "Read audio from a movie source."),
          new Filter(false, false, true, "movie",             new FilterPattern("|"), new FilterPattern("N"),       "Read from a movie source."),
          new Filter(false, false, false, "afifo",             new FilterPattern("A"), new FilterPattern("A"),       "Buffer input frames and send them when they are requested."),
          new Filter(false, false, false, "fifo",              new FilterPattern("V"), new FilterPattern("V"),       "Buffer input images and send them when they are requested."),
          new Filter(false, false, false, "abuffer",           new FilterPattern("|"), new FilterPattern("A"),       "Buffer audio frames, and make them accessible to the filterchain."),
          new Filter(false, false, false, "buffer",            new FilterPattern("|"), new FilterPattern("V"),       "Buffer video frames, and make them accessible to the filterchain."),
          new Filter(false, false, false, "abuffersink",       new FilterPattern("A"), new FilterPattern("|"),       "Buffer audio frames, and make them available to the end of the filter graph."),
          new Filter(false, false, false, "buffersink",        new FilterPattern("V"), new FilterPattern("|"),       "Buffer video frames, and make them available to the end of the filter graph."))
          .build();
}
